const Promise = require('/plugins/es6-promise');
const app = getApp();
/*
 url: 服务器url
 method: 默认GET，目前支持GET，POST
 data: 请求参数
 dataType: 	期望返回的数据格式，默认json，支持json，text，base64
 headers: 设置请求的 HTTP 头，默认 {'Content-Type': 'application/x-www-form-urlencoded'}
*/
export default function Request({ url, method, data, dataType, headers: headers = {}, catchError: catchError = true }) {
  return new Promise((resolve, reject) => {
    if (method && method.toUpperCase() === 'POST') {
      // Content-Type为application/json时，data参数只支持json字符串，用户需要手动调用JSON.stringify进行序列化
      data = JSON.stringify(data)
    }
    dd.httpRequest({
      headers: { ...headers, Cookie: encodeURI(app.globalData.cookie) },
      method: method || "get",
      data: data,
      url: app.globalData.domain + url,
      dataType: dataType || "json",
      success: function (res) {
        if (res.data.success) {
          resolve(res.data)
        } else {
          dd.hideLoading();
          reject(res.data.messages[0])
          dd.alert({
            content: res.data.messages[0]
          })
        }
      },
      fail: function (err) {
        // err.errorMessage
        dd.hideLoading()
        reject(err)
        if (catchError) {
          if (err.status === 401) {
            dd.alert({
              content: "登录过期！请点击右上角关闭小程序,重新进入"
            });
          } else {
            dd.alert({
              content: err.errorMessage
            });
          }
        }
      }
    })

  })
}